package com.work.daily.stream;

import com.work.daily.stream.data.Person;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * Stream 的映射(map/flatMap)
 *
 * @author Shengkang.Mo
 * @create 2020-11-23 17:03
 * 映射，可以将一个流的元素按照一定的映射规则映射到另一个流中。分为map和flatMap：
 * map：接收一个函数作为参数，该函数会被应用到每个元素上，并将其映射成一个新的元素。
 * flatMap：接收一个函数作为参数，将流中的每个值都换成另一个流，然后把所有流连接成一个流。
 */
public class Stream_5_1 {
    public static void main(String[] args) {

        //英文字符串数组的元素全部改为大写。
        String[] strArr = { "abcd", "bcdd", "defde", "fTr" };
        List<String> stringList = Arrays.stream(strArr).map(String::toUpperCase).collect(Collectors.toList());
        System.out.println("元素大写：" + stringList);

        //整数数组每个元素+3。
        List<Integer> intList = Arrays.asList(1, 3, 5, 7, 9, 11);
        List<Integer> intListNew = intList.stream().map(x -> x + 3).collect(Collectors.toList());
        System.out.println("元素+3：" + intListNew);

        List<Person> people = Person.initData();
        people.forEach(obj -> obj.setAge(1));
        System.out.println(people);
    }
}

